package main

import "fmt"

type Person struct {
	name string
	age int
}

func (p Person) method1()  {
	fmt.Println("method1")
}

func (p *Person) method2()  {
	fmt.Println("method2")
}

func main() {
	p := Person{"mike", 10}

	// 普通变量调用指针方法，会自动适配的
	p.method2()	// method2
	// 等价于： (&p).method2()

	q := &Person{"mike", 10}
	// 指针变量也可以直接调用普通方法，也会自动适配
	fmt.Println("q =", q)	// q = &{mike 10}
	q.method1()	// method1
	// 等价于：(*q).method1()
}
